package cn.seem.controller;

import cn.seem.model.User;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {


    @RequestMapping("/login")
    public String userLogin(User user){
        System.out.println(user);
        //-- 这里的登录只是业务登录，单纯的验证用户名和密码，是不会处理角色权限等的。所以需要Shiro的登录
        //-- 拿到了当前用户
        Subject subject = SecurityUtils.getSubject();

        System.out.println(subject + "\t" + subject.isAuthenticated());
        //-- 判断用户是否已经完成认证
        if (!subject.isAuthenticated()){
            //-- 封装用户名和密码
            UsernamePasswordToken token = new UsernamePasswordToken(user.getUserName(),user.getUserPwd());
            System.out.println("Controller" + token.hashCode());
            //-- 登录
            try{
                //-- 调用realm
                subject.login(token);
                //-- 保存用户
                return "index";
            }catch (AuthenticationException e){
                System.out.println(e.getMessage());
            }
        }
        System.out.println("没有认证通过，去登录页面！！");
        //-- 认证未通过
        return "redirect:/login.html";
    }
}
